package a00_LeetCode.ArrayList;

/**
 * @Author quan
 * @Description 删除数组中所有值为val的元素，一个都不保留
 * @Date 2023/3/27 17:27
 */
public class Num27_removeAllElement {
    public int removeElement(int[] nums, int val) {
        /**
         * 双指针法：0-fir中保存的一定是值不为val的元素
         * 注意：个人理解：这里的删除元素，一定是双只恨怎，不断移动两个指针的位置。
         * 0-fir的范围一定是合法数字，至于怎么保存的，那就是将第二个指针移动到合法位置，再将值赋值给第一个指针
         */
        int fir = 0;
        int sec = 0;
        while (sec<nums.length){
            if(nums[sec] != val ){
                nums[fir] = nums[sec];
                fir++;
            }
            sec++;
        }
        return fir;
    }
}
